The layout of information on RAID storage media may affect the performance of systems utilizing the RAID storage. “RAID 4” layout schemes involve striping of data blocks over multiple disks of a disk set, with a dedicated parity disk in each set. RAID 0 follows a similar layout, but without a parity disk. Multiple disk sets may be combined into a logical storage “volume”. A “4+1” RAID set has four disks for storing data, and one parity disk. A “5+1” RAID set has five data disks and one parity disk, and so on. Two “4+1” sets may be combined into a RAID volume comprising eight (8) data disks and two parity disks, and so on.
It may be desirable to balance I/O requests across the disks of a RAID disk set and/or volume. Thus it may be desirable to adjust the data layout so that the most common I/O requests result in utilization of most or all of the disks in a set or volume. For example, if in a “4+1” RAID system most read I/O requests are for 1 MB of data at a time, it may be desirable to set the block size (also known as the inner stripe size) of the layout to 256 KB, so that each 1 MB I/O request involves accessing each of the four disks for 256 KB.
Larger inner stripe sizes tend to be more efficient, as each disk may be accessed for a large number of bytes at a time. However, increasing the inner stripe size tends to increase the buffering requirements of applications that use the RAID, because to keep the I/O balanced over all disks of a RAID set requires that the size of I/O requests be the multiple of the inner stripe size and the number of data disks in the set. This requirement exists in order to maintain system performance in the face of a failed disk of a disk set; otherwise balancing the I/O over the disk set may not be a requirement.
Thus, increasing the inner stripe size from 256 KB to 512 KB in a “4+1” RAID system means that I/O requests must be increased by a full megabyte, from 1 MB to 2 MB. When a large number of applications are utilizing the RAID at once, the result may be substantial buffer requirements that tax the memory capability of the system.